home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 7 / DOS203A.dsk / DMFE.bas < prev    next >
BASIC Source File  |  2012-02-16  |  15KB  |  414 lines

  1. 10  REM ************************
  2. 20  REM *DOT MATRIX FONT EDITOR*
  3. 30  REM *  BY  R. GLENN JONES  *
  4. 40  REM *  COPYRIGHT (C) 1986  *
  5. 50  REM *  BY  R. GLENN JONES  *
  6. 60  REM *  DON MILLS, ONT,CAN  *
  7. 70  REM ************************
  8. 80  GOTO 3290
  9. 90  REM 
  10. 100  REM GET COMMAND
  11. 110  REM 
  12. 120  XDRAW CR AT CX,CY
  13. 130  VTAB N5: HTAB C: PRINT "COMMAND =>";: VTAB N5: HTAB N1: POKE  -16368,B: GET CMD$
  14. 140  XDRAW CR AT CX,CY
  15. 150 I1 = B
  16. 160  FOR I = C TO  LEN(CD$)
  17. 170  IF CMD$ =  MID$ (CD$,I,C)  THEN I1 = I:I =  LEN(CD$)
  18. 180  NEXT 
  19. 190  IF I1 >17  THEN  CALL CVERT,R,LE,CH$(B)
  20. 200  ON I1 GOSUB 600,710,660,810,760,860,920,960,1000,1060,1180,1250,1320,1680,1740,1800,1890,1990,2250,4090
  21. 210  GOTO 120
  22. 220  REM 
  23. 230  REM UPDATE DISPLAY
  24. 240  REM 
  25. 250  HCOLOR= HC
  26. 260  DRAW DOT AT CX,CY
  27. 270 TX = CX/K -N3:TY = CY/N0 -K
  28. 280  DRAW SMDOT AT TX +OF,(TY *D) +OF
  29. 290  IF TY = C  THEN CH$(TX) = DT$ + MID$ (CH$(TX),TY +C)
  30. 300  IF TY = Q  THEN CH$(TX) =  LEFT$(CH$(TX),TY -C) +DT$
  31. 310  IF TY >C  AND TY <Q  THEN CH$(TX) =  LEFT$(CH$(TX),TY -C) +DT$ + MID$ (CH$(TX),TY +C)
  32. 320  HCOLOR= E
  33. 330  RETURN 
  34. 340  REM 
  35. 350  REM INIT CHARACTER
  36. 360  REM 
  37. 370  FOR H = C TO N1
  38. 380 CH$(H) = "00000000"
  39. 390  NEXT H
  40. 400  RETURN 
  41. 410  REM 
  42. 420  REM  WINDOW 1
  43. 430  REM 
  44. 440  POKE N9,D: POKE N9 +C,N9 +K: POKE N9 +D,E: POKE N9 +E,N8
  45. 450  RETURN 
  46. 460  REM 
  47. 470  REM  WINDOW 2
  48. 480  REM 
  49. 490  POKE N9,B: POKE N9 +C,N6: POKE N9 +D,N4: POKE N9 +E,N5
  50. 500  RETURN 
  51. 510  REM 
  52. 520  REM  STRING PRINT
  53. 530  REM 
  54. 540  SPEED= 175: HTAB (N6 - LEN(HD$))/D: FOR G = C TO  LEN(HD$): PRINT  MID$ (HD$,G,C);:Z =  PEEK( -16336) + PEEK( -16336): FOR H = C TO 20: NEXT : NEXT : SPEED= 255: FOR H = C TO 1000: NEXT : RETURN 
  55. 550  REM 
  56. 560  REM  CURSOR ROUTINES
  57. 570  REM 
  58. 580  REM  UP
  59. 590  REM 
  60. 600 CY = CY -N0
  61. 610  IF CY <TC  THEN CY = BC
  62. 620  RETURN 
  63. 630  REM 
  64. 640  REM  LEFT
  65. 650  REM 
  66. 660  GOSUB 710: IF CX < >EC  THEN  GOSUB 710
  67. 670  RETURN 
  68. 680  REM 
  69. 690  REM  LEFT HALF STEP
  70. 700  REM 
  71. 710 CX = CX -K: IF CX <SC  THEN CX = EC
  72. 720  RETURN 
  73. 730  REM 
  74. 740  REM  RIGHT
  75. 750  REM 
  76. 760  GOSUB 810: IF CX < >SC  THEN  GOSUB 810
  77. 770  RETURN 
  78. 780  REM 
  79. 790  REM  RIGHT HALF STEP
  80. 800  REM 
  81. 810 CX = CX +K: IF CX >EC  THEN CX = SC
  82. 820  RETURN 
  83. 830  REM 
  84. 840  REM  DOWN
  85. 850  REM 
  86. 860 CY = CY +N0
  87. 870  IF CY >BC  THEN CY = TC
  88. 880  RETURN 
  89. 890  REM  
  90. 900  REM PLOT 
  91. 910  REM   
  92. 920 DT$ = "1":HC = E: GOSUB 250: RETURN 
  93. 930  REM    
  94. 940  REM UNPLOT
  95. 950  REM    
  96. 960 DT$ = "0":HC = B: GOSUB 250: RETURN 
  97. 970  REM 
  98. 980  REM CLEAR CHARACTER
  99. 990  REM 
  100. 1000  GOSUB 370
  101. 1010  HCOLOR= B: CALL HK
  102. 1020  RETURN 
  103. 1030  REM 
  104. 1040  REM FILL CHARACTER
  105. 1050  REM 
  106. 1060  HCOLOR= B: CALL HK: GOSUB 370: HCOLOR= E
  107. 1070  FOR H = SC TO EC  STEP N0
  108. 1080  FOR G = TC TO BC  STEP N0
  109. 1090  DRAW DOT AT H,G
  110. 1100  DRAW SMDOT AT ((H/K) -N3) +OF,(((G/N0) -K) *D) +OF
  111. 1110  NEXT G
  112. 1120 CH$((H/K) -N3) = "11111111"
  113. 1130  NEXT H
  114. 1140  RETURN 
  115. 1150  REM 
  116. 1160  REM  GET NEXT CHARACTER
  117. 1170  REM 
  118. 1180  CALL CVERT,R,LE,CH$(B)
  119. 1190 LE = LE +C
  120. 1200  GOSUB 1450
  121. 1210  RETURN 
  122. 1220  REM 
  123. 1230  REM  GET PREVIOUS CHARACTER
  124. 1240  REM 
  125. 1250  CALL CVERT,R,LE,CH$(B)
  126. 1260 LE = LE -C
  127. 1270  GOSUB 1450
  128. 1280  RETURN 
  129. 1290  REM 
  130. 1300  REM GET CHARACTER TO EDIT
  131. 1310  REM 
  132. 1320  CALL CVERT,R,LE,CH$(B)
  133. 1330  HOME 
  134. 1340 LE$ = NL$: VTAB N5: HTAB C: PRINT "GET CHR =>";:
  135. 1350  FOR I = C TO F
  136. 1360  HTAB N1 +I: GET TE$
  137. 1370  IF TE$ = R$  THEN I = F: HOME 
  138. 1380  IF TE$ =  CHR$(8)  THEN 1330
  139. 1390  PRINT TE$;
  140. 1400 LE$ = LE$ +TE$
  141. 1410  NEXT 
  142. 1420  IF  LEFT$(LE$,C) = "#"  AND  LEN(LE$) >C  THEN LE =  ABS( VAL( MID$ (LE$,D))): GOTO 1450
  143. 1430  IF  LEFT$(LE$,C) = "#"  AND  LEN(LE$) = C  THEN LE$ =  CHR$(35)
  144. 1440 LE =  ASC(LE$)
  145. 1450  IF LE <N9  OR LE >CS  THEN  GOTO 1330
  146. 1460  CALL CVERT,W,LE,CH$(B)
  147. 1470 CW$ =  MID$ (CH$(B),D,C)
  148. 1480  VTAB N3: HTAB N2: PRINT  RIGHT$("000" + STR$(LE),E)
  149. 1490  POKE SL,EC: IF LE <N7  THEN  POKE SL,LE +N7
  150. 1500  IF LE >EC  THEN  POKE SL,LE
  151. 1510  VTAB N3: HTAB N6: PRINT  RIGHT$(CH$(B),C)
  152. 1520  VTAB N4: HTAB N2: PRINT "     ";
  153. 1530  VTAB N4: HTAB N2: PRINT  MID$ (CH$(B),E,E);
  154. 1540  IF  MID$ (CH$(B),E,E) = NN$  THEN  PRINT "+";CW$
  155. 1550  VTAB N4: HTAB N6: PRINT  LEFT$(CH$(B),C)
  156. 1560  HOME 
  157. 1570  HCOLOR= B: CALL HK: HCOLOR= E
  158. 1580  FOR H = C TO N1
  159. 1590  FOR G = C TO Q
  160. 1600  IF  VAL( MID$ (CH$(H),G,C)) = C  THEN  DRAW DOT AT (H +N3) *K,(G +K) *N0: DRAW SMDOT AT H +OF,(G *D) +OF
  161. 1610  NEXT G,H
  162. 1620 X = (X +C) *(X <L1)
  163. 1630  IF X = B  THEN XX =  FRE(0)
  164. 1640  RETURN 
  165. 1650  REM 
  166. 1660  REM TOGGLE DESCENDER Y/N
  167. 1670  REM 
  168. 1680  IF  LEFT$(CH$(B),C) = YY$  THEN CH$(B) = N$ + RIGHT$(CH$(B),K): VTAB N4: HTAB N6: PRINT N$;: RETURN 
  169. 1690  IF  LEFT$(CH$(B),C) = N$  THEN CH$(B) = YY$ + RIGHT$(CH$(B),K): VTAB N4: HTAB N6: PRINT YY$;:
  170. 1700  RETURN 
  171. 1710  REM 
  172. 1720  REM TOGGLE DOWNLOADABLE Y/N
  173. 1730  REM 
  174. 1740  IF  RIGHT$(CH$(B),C) = YY$  THEN CH$(B) =  LEFT$(CH$(B),K) +N$: VTAB N3: HTAB N6: PRINT N$;: RETURN 
  175. 1750  IF  RIGHT$(CH$(B),C) = N$  THEN CH$(B) =  LEFT$(CH$(B),K) +YY$: VTAB N3: HTAB N6: PRINT YY$;:
  176. 1760  RETURN 
  177. 1770  REM 
  178. 1780  REM TOGGLE PROPORTIONAL ON/OFF
  179. 1790  REM 
  180. 1800  IF  MID$ (CH$(B),E,E) = NN$  THEN CH$(B) =  LEFT$(CH$(B),D) +"OFF" + RIGHT$(CH$(B),C): VTAB N4: HTAB N2: PRINT "OFF  ";: RETURN 
  181. 1810  IF  MID$ (CH$(B),E,E) = "OFF"  THEN CH$(B) =  LEFT$(CH$(B),D) +NN$ + RIGHT$(CH$(B),C): VTAB N4: HTAB N2: PRINT NN$;"+";CW$
  182. 1820  HOME : VTAB N5 -C: PRINT "CHARACTER WIDTH": PRINT "GREATER THAN ACTUAL SIZE (";: INVERSE : PRINT YY$;: NORMAL : PRINT "/N) ";A2$;: GET Y$
  183. 1830  IF Y$ = YY$  THEN CH$(B) =  LEFT$(CH$(B),C) +"1" + RIGHT$(CH$(B),F):CW$ = "1": GOTO 1850
  184. 1840 CH$(B) =  LEFT$(CH$(B),C) +"0" + RIGHT$(CH$(B),F):CW$ = "0"
  185. 1850  VTAB N4: HTAB N2: PRINT NN$;"+";CW$: HOME : RETURN 
  186. 1860  REM 
  187. 1870  REM CLEAR CHARACTER SET
  188. 1880  REM 
  189. 1890  HOME 
  190. 1900  VTAB N5: HTAB C
  191. 1910  PRINT PR$;"RETURN TO ";: INVERSE : PRINT "ERASE";: NORMAL : PRINT " CHARACTER SET =>";
  192. 1920  VTAB N5: HTAB 39
  193. 1930  GET Y$
  194. 1940  IF Y$ < >R$  THEN  HOME : RETURN 
  195. 1950  POKE N9 +D,N8 +C: HOME : TEXT : GOSUB 440: HOME : POP : GOTO 3670
  196. 1960  REM 
  197. 1970  REM  PRINT CHARACTER
  198. 1980  REM 
  199. 1990  HOME : PRINT "MAKE SURE DIP SWITCH 1-5 IS OFF": PRINT "AND THE PRINTER IS ON";:
  200. 2000  FOR I = C TO 2000: NEXT : PRINT : PRINT 
  201. 2010  PRINT D$;PS$;C
  202. 2020  VTAB F: HTAB K
  203. 2030  PRINT DF$;
  204. 2040  VTAB N5 -C
  205. 2050  FOR I = C TO N1
  206. 2060 A = N7:M = B
  207. 2070  FOR J = C TO Q
  208. 2080 M = ( VAL( MID$ (CH$(I),J,C)) *A) +M:A = A/D
  209. 2090  NEXT J
  210. 2100  IF  PEEK(CL) >N7 -C  THEN  GOTO 2100
  211. 2110  POKE CO,M
  212. 2120  NEXT I
  213. 2130  PRINT D$;PS$;B
  214. 2140  PRINT PR$;"ANY KEY TO PRINT CHARACTER =>";: GET Y$
  215. 2150  HOME : PRINT : INVERSE : PRINT "PRINTING": NORMAL 
  216. 2160  PRINT D$;PS$;C
  217. 2170  PRINT UD$
  218. 2180  PRINT "A"
  219. 2190  PRINT UN$
  220. 2200  PRINT D$;PS$;B
  221. 2210  RETURN 
  222. 2220  REM 
  223. 2230  REM  DOS
  224. 2240  REM 
  225. 2250  POKE N9 +D,N8 +C: HOME : TEXT : GOSUB 440: HOME :CD$ = "CDSLE"
  226. 2260  VTAB N: INVERSE 
  227. 2270  HTAB E: PRINT "C";: NORMAL : PRINT "ATALOG": INVERSE : PRINT 
  228. 2280  HTAB E: PRINT "D";: NORMAL : PRINT "ELETE": INVERSE : PRINT 
  229. 2290  HTAB E: PRINT "S";: NORMAL : PRINT "AVE": INVERSE : PRINT 
  230. 2300  HTAB E: PRINT "L";: NORMAL : PRINT "OAD": INVERSE : PRINT 
  231. 2310  HTAB E: PRINT E$;: NORMAL : PRINT "SCAPE": PRINT 
  232. 2320  PRINT A2$;: GET DC$
  233. 2330 I2 = B
  234. 2340  FOR I = C TO K
  235. 2350  IF DC$ =  MID$ (CD$,I,C)  THEN I2 = I:I = K
  236. 2360  NEXT 
  237. 2370  ON I2 GOSUB 2430,2490,2700,2580
  238. 2380  IF I2 = K  THEN  HOME : POP : GOTO 3770
  239. 2390  GOTO 2250
  240. 2400  REM 
  241. 2410  REM CATALOG
  242. 2420  REM 
  243. 2430  HOME : PRINT D$;CA$;SL$;DR$
  244. 2440  PRINT : PRINT PR$;: INVERSE : PRINT "ANY";: NORMAL : PRINT " KEY TO CONTINUE": PRINT : PRINT A2$;: GET Y$
  245. 2450  RETURN 
  246. 2460  REM 
  247. 2470  REM DELETE
  248. 2480  REM 
  249. 2490  HOME :FI$ = NL$: VTAB N0: PRINT "FILE TO DELETE": PRINT 
  250. 2500  INPUT "=>";DE$
  251. 2510  IF  LEN(DE$) >L1  THEN DE$ =  LEFT$(DE$,L1)
  252. 2520 AC$ = "DELETE FILE":FI$ = DE$:AD$ = "DELETE": GOSUB 3160
  253. 2530  PRINT D$;"DELETE ";DE$;SL$;DR$
  254. 2540  RETURN 
  255. 2550  REM 
  256. 2560  REM  LOAD FILE
  257. 2570  REM 
  258. 2580  HOME :FI$ = NL$
  259. 2590  VTAB N0: PRINT "LOAD CHARACTER SET": PRINT 
  260. 2600  INPUT "=>";LO$
  261. 2610  IF LO$ = "?"  THEN  HOME : GOSUB 2430: GOTO 2580
  262. 2620  IF  LEN(LO$) >L2  THEN LO$ =  LEFT$(LO$,L2)
  263. 2630 LO$ = LO$ +".SET"
  264. 2640 AC$ = "LOAD CHARACTER SET":FI$ = LO$:AD$ = "LOAD": GOSUB 3160
  265. 2650  PRINT D$;B$;LO$;",A$1580";SL$;DR$
  266. 2660  RETURN 
  267. 2670  REM 
  268. 2680  REM SAVE
  269. 2690  REM 
  270. 2700  HOME : VTAB N0
  271. 2710  PRINT "SAVE ";A1$;: INVERSE : PRINT "C";: NORMAL : PRINT "HARACTER SET"
  272. 2720  VTAB N1 +C: HTAB N: PRINT A1$;: INVERSE : PRINT "F";: NORMAL : PRINT "ONT FILE"
  273. 2730  VTAB 14: HTAB N: PRINT A1$;: INVERSE : PRINT E$;: NORMAL : PRINT "SCAPE"
  274. 2740  VTAB 16: HTAB N: PRINT A1$;: GET SA$
  275. 2750  IF SA$ = "C"  THEN  GOSUB 2820
  276. 2760  IF SA$ = "F"  THEN  GOSUB 2940
  277. 2770  IF SA$ = E$  THEN  RETURN 
  278. 2780  GOTO 2700
  279. 2790  REM 
  280. 2800  REM  SAVE CHARACTER SET
  281. 2810  REM 
  282. 2820  HOME :FI$ = NL$
  283. 2830  VTAB N0: PRINT "SAVE CHARACTER SET": PRINT 
  284. 2840  INPUT "=>";SA$
  285. 2850  IF SA$ = "?"  THEN  HOME : GOSUB 2430: GOTO 2820
  286. 2860  IF  LEN(SA$) >L2  THEN SA$ =  LEFT$(SA$,L2)
  287. 2870 SA$ = SA$ +".SET"
  288. 2880 AC$ = "SAVE CHARACTER SET":FI$ = SA$:AD$ = "SAV": GOSUB 3160
  289. 2890  PRINT D$;"BSAVE ";SA$;",A$1580,L$";L1$;SL$;DR$
  290. 2900  RETURN 
  291. 2910  REM 
  292. 2920  REM  SAVE FONT FILE
  293. 2930  REM 
  294. 2940  HOME :FI$ = NL$
  295. 2950  VTAB N0: PRINT "SAVE FONT FILE": PRINT 
  296. 2960  INPUT "=>";FF$
  297. 2970  IF FF$ = "?"  THEN  HOME : GOSUB 2430: GOTO 2940
  298. 2980  IF  LEN(FF$) >L2  THEN FF$ =  LEFT$(FF$,L2)
  299. 2990 FF$ = FF$ +".FNT"
  300. 3000  HOME : VTAB N0
  301. 3010  PRINT "INITIALIZE PRINTER RAM"
  302. 3020  PRINT 
  303. 3030  PRINT "WITH STANDARD CHARACTERS (";: INVERSE : PRINT YY$;: NORMAL : PRINT "/N)": PRINT 
  304. 3040  PRINT A2$;: GET Y$
  305. 3050 IM = C: IF Y$ = N$  THEN IM = B
  306. 3060  POKE IR,IM
  307. 3070 AC$ = "SAVE FONT FILE":FI$ = FF$:AD$ = "SAV": GOSUB 3160
  308. 3080  CALL DW
  309. 3090 L =  PEEK(2046) +256 * PEEK(2047)
  310. 3100 L = L +297
  311. 3110  PRINT D$;"BSAVE ";FF$;",A$8D7,L";L;SL$;DR$
  312. 3120  RETURN 
  313. 3130  REM 
  314. 3140  REM  CONFIRM
  315. 3150  REM 
  316. 3160  HOME : VTAB N0
  317. 3170  PRINT PR$;: INVERSE : PRINT RE$;: NORMAL : PRINT " TO ";AC$: PRINT 
  318. 3180  PRINT A2$;FI$: PRINT 
  319. 3190  VTAB N8: HTAB F: PRINT "(PRESS ANY OTHER KEY TO ESCAPE)";
  320. 3200  VTAB 14: HTAB C: PRINT A2$;: GET Y$
  321. 3210  IF Y$ < >R$  THEN  POP : RETURN 
  322. 3220  HOME : INVERSE : VTAB N0
  323. 3230  PRINT AD$;"ING";
  324. 3240  NORMAL : PRINT " ";FI$
  325. 3250  RETURN 
  326. 3260  REM 
  327. 3270  REM  INITIALIZATION  
  328. 3280  REM  
  329. 3290  IF  PEEK(104) < >66  THEN  POKE 103,1: POKE 104,66: POKE 16896,B: PRINT  CHR$(4);"RUN DMFE"
  330. 3300  ONERR  GOTO 3890
  331. 3310  DIM CH$(11):A1$ = "=> ":A2$ = "=>":B$ = "BLOAD ":D$ =  CHR$(13) + CHR$(4):DR$ = ",D1":E$ = "E":N$ = "N":NL$ = "":NN$ = " ON":PR$ = "PRESS ":R$ =  CHR$(13):RE$ = "RETURN":SL$ = ",S6":YY$ = "Y"
  332. 3320 UN$ =  CHR$(27) +"$0":UD$ =  CHR$(27) +"$1":DF$ =  CHR$(27) +"*1" + CHR$(65) + CHR$(65) + CHR$(139):PS$ = "PR#":CA$ = "CATALOG"
  333. 3330 B = 0:C = 1:D = 2:E = 3:F = 4:K = 5:N = 6:P = 7:Q = 8:N0 = 10:N1 = 11:N2 = 15:N8 = 19:N3 = 21:N4 = 22:N5 = 24
  334. 3340 L2 = 26:L1 = 30:N9 = 32:N6 = 40:OF = 51:TC = 60:SC = 110:N7 = 128:BC = 130:EC = 160:SL = 1635:WF = 44567:NF = 44452:CO = 49296:CL = 49601
  335. 3350 CVERT = 16384:INIT = 16750:DW = 2048:IR = 2508:HK = 16782
  336. 3360  POKE WF,L2: POKE NF,N0 +D: POKE NF +153,N0 +D
  337. 3370  HOME 
  338. 3380  PRINT "::::::::::::::::::::::::::::::::::::::::";: REM 40 COLONS
  339. 3390  PRINT ":                                      :";: REM 38 SPACES
  340. 3400  PRINT "::::::::::::::::::::::::::::::::::::::::";: REM 40 COLONS
  341. 3410  FOR I = F TO N8: PRINT ":                                      :";: NEXT : REM 38 SPACES
  342. 3420  PRINT "::::::::::::::::::::::::::::::::::::::::";: REM 40 COLONS
  343. 3430  VTAB D:HD$ = "  DOT MATRIX FONT EDITOR": GOSUB 540
  344. 3440  GOSUB 440
  345. 3450  VTAB F:HD$ = "BY R.GLENN JONES ": GOSUB 540
  346. 3460  VTAB N8:HD$ = "COPYRIGHT(C) 1986 R. GLENN JONES ": GOSUB 540
  347. 3470  FOR G = C TO 1000: NEXT 
  348. 3480  VTAB N8: HTAB C: CALL  -868: VTAB N8:HD$ = "(PRESS ANY KEY TO CONTINUE)": GOSUB 540
  349. 3490  WAIT  -CVERT,N7: POKE  -16368,B: POKE N9 +D,F: POKE N9 +E,N8 -C
  350. 3500  IF  PEEK(768) < >E  THEN  PRINT D$;B$;"ST.FONTSET,A$300"
  351. 3510  POKE 232,B: POKE 233,E
  352. 3520  IF  PEEK(CVERT) < >N9  THEN  PRINT D$;B$;"CONVERT,A$4000"
  353. 3530  IF  PEEK(DW) < >169  THEN  PRINT D$;B$;"DOWNLOAD,A$800"
  354. 3540  ONERR  GOTO 3890
  355. 3550  GOSUB 440: HOME : VTAB P: POKE N9,D
  356. 3560  PRINT "DATA DISK SLOT =>";: PRINT  RIGHT$(SL$,C)
  357. 3570  PRINT 
  358. 3580  PRINT "DATA DISK DRIVE =>";: PRINT  RIGHT$(DR$,C)
  359. 3590  PRINT : PRINT PR$;: INVERSE : PRINT RE$;: NORMAL : PRINT " TO CONTINUE": PRINT : PRINT "OR ANY OTHER KEY TO MODIFY VALUES": PRINT 
  360. 3600  PRINT A2$;: GET Y$
  361. 3610  IF Y$ = R$  THEN  GOTO 3670
  362. 3620  VTAB P: HTAB 18: GET SL$: PRINT SL$: IF  VAL(SL$) <C  OR  VAL(SL$) >P  THEN  GOTO 3620
  363. 3630  VTAB 9: HTAB N8: GET DR$: PRINT DR$: IF  VAL(DR$) <C  OR  VAL(DR$) >D  THEN  GOTO 3630
  364. 3640 SL$ = ",S" +SL$
  365. 3650 DR$ = ",D" +DR$
  366. 3660  GOTO 3540
  367. 3670  CALL INIT
  368. 3680  HOME : VTAB N0: INVERSE : PRINT "B";: NORMAL : PRINT "EGIN OR ";: INVERSE : PRINT E$;: NORMAL : PRINT "DIT": PRINT 
  369. 3690  PRINT A2$;: GET ED$
  370. 3700  HOME : VTAB N0: INVERSE 
  371. 3710  PRINT N$;: NORMAL : PRINT "ORMAL OR ";: INVERSE : PRINT E$;: NORMAL : PRINT "XTENDED CHARACTER SET": PRINT 
  372. 3720  PRINT A2$;: GET CS$
  373. 3730 CS = 127:L1$ = "480": IF CS$ = E$  THEN CS = 255:L1$ = "A80"
  374. 3740  IF ED$ = E$  THEN  GOSUB 2580
  375. 3750  HOME : SCALE= C: ROT= C: HCOLOR= E
  376. 3760 CR = C:DOT = D:SMDOT = E:CY = TC:CX = SC
  377. 3770 CD$ =  CHR$(73) + CHR$(10) + CHR$(74) + CHR$(11) + CHR$(75) + CHR$(77) + CHR$(32) + CHR$(13) + CHR$(3) + CHR$(6) + CHR$(43) + CHR$(45) + CHR$(7) + CHR$(19) + CHR$(12) + CHR$(16) + CHR$(64) + CHR$(20) + CHR$(4) + CHR$(27)
  378. 3780  GOSUB 490
  379. 3790  VTAB N3: HTAB C: INVERSE 
  380. 3800  PRINT "EDITING ASC =>";: NORMAL : PRINT  SPC( 14);: INVERSE : PRINT "DOWNLOAD =>": PRINT "PROPORTIONAL=>";: NORMAL : PRINT  SPC( 14);: INVERSE : PRINT "DESCENDER=>": NORMAL 
  381. 3810  POKE 230,N9: CALL 62450: HGR 
  382. 3820  HPLOT B,B TO B,159 TO 279,159 TO 279,B TO B,B
  383. 3830  HPLOT 108,53 TO 108,134 TO 169,134 TO 169,53 TO 108,53
  384. 3840  GOSUB 1340
  385. 3850  GOTO 120
  386. 3860  REM 
  387. 3870  REM  ONERR ROUTINE
  388. 3880  REM 
  389. 3890  HOME : VTAB N5: HTAB C: INVERSE 
  390. 3900 ER =  PEEK(222): CALL 1002
  391. 3910  IF ER = F  THEN  PRINT "DISKETTE WRITE PROTECTED";
  392. 3920  IF ER = N  THEN  PRINT "FILE NOT FOUND";
  393. 3930  IF ER = P  THEN  PRINT "VOLUME MISMATCH";
  394. 3940  IF ER = Q  THEN  PRINT "DISKETTE I/O ERROR";
  395. 3950  IF ER = 9  THEN  PRINT "DISKETTE FULL";
  396. 3960  IF ER = N0  THEN  PRINT "FILE LOCKED";
  397. 3970  IF ER = N1  THEN  PRINT "DOS SYNTAX ERROR";: NORMAL : PRINT  CHR$(7): FOR G = C TO 1500: NEXT :Y$ = " ": GOTO 4020
  398. 3980  IF ER = N1 +D  THEN  PRINT "FILE TYPE MISMATCH";
  399. 3990  IF ER = 77  THEN  PRINT "OUT OF MEMORY";: TEXT : END 
  400. 4000  PRINT  CHR$(7);: FOR I = C TO 1500: NEXT 
  401. 4010  HOME : VTAB N0: NORMAL : PRINT PR$;: INVERSE : PRINT RE$;: NORMAL : PRINT " TO TRY AGAIN =>";: GET Y$
  402. 4020  GOSUB 490: HOME : GOSUB 440: HOME 
  403. 4030  IF Y$ < >R$  THEN  POKE 216,B: GOTO 3540
  404. 4040  ONERR  GOTO 3890
  405. 4050  RESUME 
  406. 4060  REM 
  407. 4070  REM  QUIT
  408. 4080  REM 
  409. 4090  HOME : VTAB N5 -C: HTAB C
  410. 4100  PRINT PR$;: INVERSE : PRINT RE$;: NORMAL : PRINT " TO ";: INVERSE : PRINT "QUIT": NORMAL : PRINT "ANY OTHER KEY TO CONTINUE =>";
  411. 4110  VTAB N5: HTAB 29: GET Y$
  412. 4120  IF Y$ < >R$  THEN  HOME : RETURN 
  413. 4130  POKE WF,29: POKE NF,22: POKE NF +153,21
  414. 4140  TEXT : HOME : END